// 演示响应 http 的不同请求方式和参数传递
import express from "express";

const app = express();

// 设置模板引擎
app.set("view engine", "ejs");
// 设置模板文件的目录
app.set("views", "./views");
// 设置 body 参数解析
app.use(express.urlencoded({ extended: true }));

// 定义路由
// 路径传参：GET、POST、PUT、DELETE 都可以！
//     app.get("/student/:id/:action", ...): 定义两个参数：id, action
//     浏览器访问：http://localhost:3000/student/123/edit
//     req.params.id 获取参数 id
//     req.params.action 获取参数 action
// query 参数：GET、POST、PUT、DELETE 都可以！但主要是 GET 请求
//     使用url地址传参: url?参数名=参数值&参数名2=参数值2
//     浏览器访问：http://localhost:3000/student?id=123&action=edit
//     req.query.id 获取参数 id
//     req.query.action 获取参数 action
// body 参数：POST、PUT、DELETE 可以！
//     使用body传参：表单默认是 application/x-www-form-urlencoded 格式，
//     req.body 获取参数

app.get("/", (req, res) => {
  // 获取 query 参数
  const { name, age } = req.query;
  res.render("methods", { name, age });
});

app.post("/student/:id/:action", (req, res) => {
  const { name, age } = req.query;
  const { id, action } = req.params;
  const { username, password } = req.body;
  res.send(`POST 请求, query 参数 name:${name}, age:${age}, path 参数 id:${id}, action:${action}, body 参数 username:${username}, password:${password}`);
})

app.put("/student", (req, res) => {
  res.send(`PUT 请求`);
})

app.delete("/student", (req, res) => {
  res.send(`DELETE 请求`);
})

// 启动服务器
app.listen(3000, () => {
  console.log("服务器已启动，监听端口 3000。http://localhost:3000");
});